package cn.edu.ujn.service;

import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.edu.ujn.dao.BaseDict;
import cn.edu.ujn.dao.User;
import cn.edu.ujn.dao.UserMapper;
import cn.edu.ujn.util.MD5Encoder;
import cn.edu.ujn.util.Page;
@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {
	@Autowired
	private UserMapper userMapper;
	//按照账号密码进行查询
	@Override
	public User findUser(String usercode, String password) {
		String result=password;
			MD5Encoder pe = new MD5Encoder();
			try {
				 result = pe.geMd5(usercode, password);
			} catch (NoSuchAlgorithmException|UnsupportedEncodingException e) {
				e.printStackTrace();
			} 
	
		return userMapper.findUser(usercode, result);
	}
	@Override
	public Page<User> selectByCondintion(Integer currentPage,Integer pageSize,String keyWord) {
		HashMap map = new HashMap();
		Page<User> page = new Page<User>();
		//搜索参数
		map.put("keyWord", keyWord);
		//计算当前的页面最后的一行的，然后作为查询的开始位置，key必须用start,工具类的导航类已经写名字了，必须对应
		map.put("start", (currentPage-1)*pageSize);
		//设置页面显示多少行，key必须用rows,工具类的导航类已经写名字了，必须对应
		map.put("rows", pageSize);
		//按照给的搜索条件进行查询，返回List客户列表
		List<User> Rows = userMapper.selectUserList(map);
		//计算上面条件进行查询的总行数
		int Total=userMapper.selectUserListCount(keyWord);
		//设置分页
		page.setPage(currentPage);//设置当前页面
		page.setSize(pageSize);//设置页面大小
		page.setRows(Rows);//条件查询的结果返回
		page.setTotal(Total);//总行数
		//返回一个Page对象
		return page;
	}
	//删除用户
	@Override
	public int deleteUser(Integer id) {
		User user=new User();
		user.setUser_state(0);
		user.setUser_id(id);
		return userMapper.updateByPrimaryKeySelective(user);
	}
	//通过id查找用户
	@Override
	public User getUserById(Integer id) {
		return userMapper.selectByPrimaryKey(id);
	}
	//更新用户
	@Override
	public int updateUser(User user,String pwd) {
		if("1".equals(pwd)) {//pwd=1时候，设置新密码
			MD5Encoder pe = new MD5Encoder();
			try {
				String result = pe.geMd5(user.getUser_code(), user.getUser_password());
				user.setUser_password(result);
			} catch (NoSuchAlgorithmException|UnsupportedEncodingException e) {
				e.printStackTrace();
			} 
		}
		return userMapper.updateByPrimaryKeySelective(user);
	}
	//创建用户
	@Override
	public int creatUser(User user) {
		MD5Encoder pe = new MD5Encoder();
		try {
			String result = pe.geMd5(user.getUser_code(), user.getUser_password());
			user.setUser_password(result);
		} catch (NoSuchAlgorithmException|UnsupportedEncodingException e) {
			e.printStackTrace();
		} 
		return userMapper.insert(user);
	}
	@Override
	public User getUserByUserCode(String user_code) {
		return userMapper.selectByUserCode(user_code);
	}
	

}
